@@ -1,15 +1,21 @@ |
||
1 | 1 |
class SubscriptionController < ApplicationController |
2 |
+ |
|
2 | 3 |
def create |
3 | 4 |
@subscription = Subscription.new(subscription_params) |
4 | 5 |
respond_to do |format| |
5 |
- if @subscription.save |
|
6 |
- UserMailer.newsletter_subscription(@subscription).deliver |
|
7 |
- format.html { redirect_to root_path, notice: 'Thanks for subscribing to our newsletter' } |
|
8 |
- format.json { render action: 'show', status: :created, location: @subscription } |
|
6 |
+ if Subscription.find_by_email(@subscription.email) == nil |
|
7 |
+ if @subscription.save |
|
8 |
+ UserMailer.newsletter_subscription(@subscription).deliver |
|
9 |
+ format.html { redirect_to root_path, notice: 'Thanks for subscribing to our newsletter' } |
|
10 |
+ format.json { render action: 'show', status: :created, location: @subscription } |
|
11 |
+ else |
|
12 |
+ format.html { redirect_to root_path, alert: 'An error ocured. Please try gain.' } |
|
13 |
+ format.json { render json: @subscription.errors, status: :unprocessable_entity } |
|
14 |
+ end |
|
9 | 15 |
else |
10 |
- format.html { redirect_to root_path, alert: 'An error ocured. Please try gain.' } |
|
11 |
- format.json { render json: @subscription.errors, status: :unprocessable_entity } |
|
12 |
- end |
|
16 |
+ format.html { redirect_to root_path, alert: 'You have already registered to our newsletter' } |
|
17 |
+ format.json { render action: 'show', status: :created, location: @subscription } |
|
18 |
+ end |
|
13 | 19 |
end |
14 | 20 |
end |
15 | 21 |
|
@@ -1,14 +1,19 @@ |
||
1 |
-<h3><%= (t 'subscription.header')%></h3> |
|
2 |
-<%= bootstrap_form_for(@subscription) do |f| %> |
|
3 |
- <%= f.alert_message "Please fix the errors below."%> |
|
4 |
- <%= f.form_group :first_name do %> |
|
5 |
- <%= f.text_field :first_name, label: (t 'registration.first_name'), class: 'input-block-level', required: true %> |
|
6 |
- <% end %> |
|
7 |
- <%= f.form_group :last_name do %> |
|
8 |
- <%= f.text_field :last_name, label: (t 'registration.last_name'), class: 'input-block-level', required: true %> |
|
9 |
- <% end %> |
|
10 |
- <%= f.form_group :email do %> |
|
11 |
- <%= f.text_field :email, label: (t 'registration.email'), class: 'input-block-level', required: true %> |
|
12 |
- <% end %> |
|
13 |
- <%= f.submit (t 'subscription.submit'), class: 'btn btn-success', id: 'submit_subscription' %> |
|
14 |
-<% end %> |
|
1 |
+ |
|
2 |
+<li class="span3"> |
|
3 |
+ <div class="thumbnail" style="margin-left: 0px; padding: 10px; padding-top: 0px; height: 300px;"> |
|
4 |
+ <h4><%= (t 'subscription.header')%></h4> |
|
5 |
+ <%= bootstrap_form_for(@subscription) do |f| %> |
|
6 |
+ <%= f.alert_message "Please fix the errors below."%> |
|
7 |
+ <%= f.form_group :first_name do %> |
|
8 |
+ <%= f.text_field :first_name, label: (t 'registration.first_name'), class: 'input-block-level', required: true %> |
|
9 |
+ <% end %> |
|
10 |
+ <%= f.form_group :last_name do %> |
|
11 |
+ <%= f.text_field :last_name, label: (t 'registration.last_name'), class: 'input-block-level', required: true %> |
|
12 |
+ <% end %> |
|
13 |
+ <%= f.form_group :email do %> |
|
14 |
+ <%= f.text_field :email, label: (t 'registration.email'), class: 'input-block-level', required: true %> |
|
15 |
+ <% end %> |
|
16 |
+ <%= f.submit (t 'subscription.submit'), class: 'btn btn-success pull-right', id: 'submit_subscription' %> |
|
17 |
+ <% end %> |
|
18 |
+ </div> |
|
19 |
+</li> |
@@ -21,8 +21,7 @@ |
||
21 | 21 |
</div> |
22 | 22 |
</li> |
23 | 23 |
<% end %> |
24 |
+ <%= render 'layouts/subscribe_to_newsletter' %> |
|
24 | 25 |
</ul> |
25 |
- |
|
26 |
- |
|
27 | 26 |
<br> |
28 |
-<%= render 'layouts/subscribe_to_newsletter' %> |
|
27 |
+ |
@@ -32,19 +32,20 @@ Feature: Email Subscription |
||
32 | 32 |
And I should see "John Doe" |
33 | 33 |
And I should see "john_doe@website.com" |
34 | 34 |
|
35 |
+ Scenario: Somebody already registered tries to submit to newsletter subscription form |
|
36 |
+ Given I visit the homepage |
|
37 |
+ When I fill in "subscription_first_name" with "Jimy" |
|
38 |
+ And I fill in "subscription_last_name" with "San" |
|
39 |
+ And I fill in "subscription_email" with "jimysan@website.com" |
|
40 |
+ And I click in the button "submit_subscription" |
|
41 |
+ Then I should see "You have already registered to our newsletter" |
|
42 |
+ |
|
35 | 43 |
Scenario: Export subscription list as a CVS file |
36 | 44 |
Given I am logged in as admin |
37 | 45 |
And I go to the subscribers page |
38 | 46 |
When I click in the link "Export CVS" |
39 | 47 |
Then I should see "Jimy,San,jimysan@website.com," |
40 | 48 |
And I should see "John,Doe,john_doe@website.com" |
41 |
- |
|
42 |
- |
|
43 |
- # 1. Create subscription model |
|
44 |
- # 2. Create subscription controller |
|
45 |
- # 3. Create subscription form view helper |
|
46 |
- # 4. Define subscribers method in admin controller |
|
47 |
- # 5. Create subscribers view |
|
48 |
- # 6. Define Export to CVS method in admin controller |
|
49 |
+ |
|
49 | 50 |
# 7. Hookup the mailchimp API and send subscriber after subscription |
50 | 51 |
|